Guardians of Hope: Why Do They Become Targets?

Published

March 29, 2025

1.Introduction

On the frontlines of humanitarian aid, workers worldwide face increasing security threats. Violence is frequent, putting their lives at constant risk. Attacks vary from aerial bombardments and shootings to kidnappings, sexual violence, and IED explosions. The motives behind these attacks range from political and economic disputes to incidental or other complex reasons.

Data analysis helps uncover patterns and trends in these threats. Through visualization, we can identify the most dangerous regions, the most common attack types, the risks faced by different organizations, and ways to enhance worker safety.

This report leverages data and visual analytics to explore the security challenges faced by humanitarian workers. Analyzing geographic distribution, trends over time, organizational differences, personnel risks, and attack motives, we present insights through static and interactive visualizations to make the data more accessible and actionable.

1.1 Event Distribution Map

Code
# Load necessary libraries
library(leaflet)
library(leaflet.extras)
library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
Code
# Read the data
df <- read.csv("../data/clean_data.csv", stringsAsFactors = FALSE)

# Filter out rows where latitude and longitude are missing
df_clean <- df[!is.na(df$Latitude) & !is.na(df$Longitude),]

# colorpalette
heatmap_colors <- colorRampPalette(c("#0000FF","#00FF00", "#FFFF00", "#FF7F00", "#FF0000"))(6)

# Create the leaflet map
leaflet(df_clean) %>%
  addTiles() %>%
  
  # Add layer control to allow users to toggle between heatmap and markers
  addLayersControl(
    overlayGroups = c("Heatmap", "Incident Markers"),
    options = layersControlOptions(collapsed = FALSE)
  ) %>%
  
  # Add heatmap and assign it to a group
  addHeatmap(
    lat = ~Latitude, lng = ~Longitude,
    intensity = ~Total.affected,
    blur = 20, max = 0.05,
    group = "Heatmap"
  ) %>%
  
  # Add incident markers and assign them to another group
  addCircleMarkers(
    ~Longitude, ~Latitude,
    radius = 5,
    color = "blue",
    fillOpacity = 0.7,
    group = "Incident Markers",
    popup = ~paste(
      "<strong>", Year, " - ", Country, "</strong><br>",
      "<b>Organization:</b> ", affected_organizations, "<br>",
      "<b>Casualties:</b> Killed ", Total.killed, " | Wounded ", Total.wounded, " | Kidnapped ", Total.kidnapped, "<br>",
      "<b>Attack Type:</b> ", Means.of.attack, "<br>",
      "<b>Attack Context:</b> ", Attack.context
    )
  ) %>%
  
  # add explanation legend
  addLegend(
    position = "bottomright",
    colors = rev(heatmap_colors),  
    labels = c("Very High", "High", "Moderately High", "Moderate", "Low", "Very Low"),
    title = "Incident Density",
    opacity = 0.7
  ) %>%
  
  # Add a title centered at the top of the map
  addControl("<h3 style='text-align:center;'>Global Security Incident Map</h3>", position = "topright")

From this plot, it shows that humanitarian workers face highly uneven security threats worldwide. The most dangerous hotspots are concentrated in East-Central Africa, the Middle East, and South Asia, particularly in Somalia, Afghanistan, Iraq, Syria, and Pakistan. These regions display “Very High” incident density (red areas), indicating that long-term regional conflicts, political instability, and extremist group activities pose persistent threats to humanitarian work. In contrast, East Asia, South America, and North America show significantly lower incident density, while Central America, Southeast Asia, and Eastern Europe present moderate risk levels.

1.2 Humanitarian crises: death, injury and abduction rates

This pie chart reveals the harsh reality of humanitarian work. The data shows that among all recorded security incidents, fatalities represent the largest proportion, accounting for over 40% of the total. This alarming percentage indicates that the risks in humanitarian work are not merely threats but direct dangers to life. This is followed by injury incidents at approximately 35%, while kidnapping incidents account for about 25%.

These three types of incidents constitute the main threats faced by humanitarian workers in dangerous regions. Notably, death and injury incidents together make up around 75% of the total, highlighting that violent actions against humanitarian workers are typically aimed at causing physical harm rather than just kidnapping for ransom. These statistics emphasize the urgency of strengthening security measures for humanitarian workers.

3. Risk by Role: How Mission Types Shape Threat Exposure?

3.1 Stacked Risks: Deaths, Injuries, and Kidnappings Across Organizations

This stacked bar chart illustrates the cumulative impact of security incidents on different types of humanitarian organizations from 1997 to 2025, including the number of deaths, injuries, and kidnappings.

International NGOs are by far the most affected, with significantly higher numbers of injuries and deaths than other organizations. This reflects their broad presence and active operations in high-risk areas.

National NGOs and UN agencies also face substantial security threats, ranking second and third respectively. This highlights that both international and local organizations working on the front lines of conflict and crisis are vulnerable to danger.

In contrast, organizations within the Red Cross and Red Crescent movement show relatively lower numbers of affected individuals. This may be due to their neutral status, unique operational strategies, and access mechanisms.

Interestingly, the composition of incident types varies across organizations. Only INGOs and the UN show a higher proportion of injuries, whereas other groups are more heavily affected by fatalities. This suggests the need for tailored security strategies based on the specific risk profiles of different organization types.

3.2 Different Missions, Different Dangers

INGO (International NGOs)

  • Main roles: Field-based medical care, education, disaster response.
  • Common attacks: Bodily assault, shooting, kidnapping.

Frequent frontline deployment puts INGOs at high physical risk. The balance of injuries and deaths suggests exposure to both targeted and chaotic violence.


NNGO (National NGOs)

  • Main roles: Community outreach, local service delivery.
  • Common attacks: Shooting, kidnap-killing, bodily assault.

Local workers are more vulnerable to lethal attacks, possibly due to limited protection and continuous presence in unstable zones.


UN (United Nations)

  • Main roles: Refugee support, education, food aid, child protection.
  • Common attacks: Bodily assault, shooting, IEDs, occasional airstrikes.

Despite security protocols, the UN is often targeted symbolically or caught in broader conflict, especially in high-visibility operations.


ICRC & Red Cross/Red Crescent

  • Main roles: Neutral humanitarian access, medical aid, conflict mediation.
  • Common attacks: Shooting, unknown causes.

Benefiting from neutrality, the Red Cross faces fewer direct attacks, though neutrality is not always respected in chaotic conflict zones.


Summary

  • Roles shape risk. Field-heavy work leads to more physical attacks.
  • Local NGOs carry the highest fatality risk.
  • International visibility (UN) leads to symbolic targeting.
  • Red Cross benefits from neutrality, but not always.

3.3 Why Are They Targeted?

  • Unknown remains the most common motive across all organizations, reflecting frequent lack of clear attribution in chaotic conflict zones.
  • INGOs are highly associated with economic, political, and disputed motives, likely due to their visibility and perceived influence in fragile states.
  • NNGOs and the UNalso show strong ties to incidental and political motives, suggesting that local presence and high-profile missions can draw opportunistic attacks.
  • ICRC and NRCS/IFRC, while generally protected by their neutral mandates, still face considerable exposure to politically motivated and disputed-context incidents.

4. Who Faces the Danger?

4.1 Nationality in Humanitarian Risk

Proportion of National vs International Victims by Organization

National vs International Staff Over Time

Code
library(dplyr)
library(tidyr)
library(plotly)

df_nation <- df_clean %>%
  group_by(Year) %>%
  summarise(
    National_Killed = sum(Nationals.killed, na.rm = TRUE),
    National_Injured = sum(Nationals.wounded, na.rm = TRUE),
    National_Kidnapped = sum(Nationals.kidnapped, na.rm = TRUE),
    International_Killed = sum(Internationals.killed, na.rm = TRUE),
    International_Injured = sum(Internationals.wounded, na.rm = TRUE),
    International_Kidnapped = sum(Internationals.kidnapped, na.rm = TRUE)
  ) %>%
  pivot_longer(
    cols = -Year,
    names_to = c("Type", "IncidentType"),
    names_sep = "_",
    values_to = "Count"
  )

library(ggplot2)

gg_area <- ggplot(df_nation, aes(x = Year, y = Count, fill = IncidentType)) +
  geom_area(position = "stack", alpha = 0.85) +
  facet_wrap(~Type) +
  scale_fill_manual(values = c("Killed" = "#c45259", "Injured" = "#f6771d", "Kidnapped" = "#ff878b")) +
  labs(title = "Comparison of Risks: National vs International Staff (1997–2025)",
       x = "Year",
       y = "Number of People Affected",
       fill = "Incident Type") +
  theme_minimal()
plotly::ggplotly(gg_area)
  • National staff are overwhelmingly the most affected, especially in the past decade. They consistently suffer higher numbers of deaths and injuries compared to international colleagues.
  • International staff face fewer incidents overall, and when targeted, are more likely to be kidnapped rather than killed or wounded.
  • local staff are more exposed, often placed on the frontlines while international staff operate in safer, more protected roles. The imbalance holds across nearly all organizations, with over 80–95% of victims being nationals in most humanitarian groups.

4.2 Gender in Humanitarian Risk

Code
library(dplyr)
library(tidyr)
library(ggplot2)
library(plotly)

# Data preparation
df_percent <- df_clean %>%
  select(Continent, Means.of.attack,
         Gender.Male, Gender.Female,
         Total.killed, Total.wounded, Total.kidnapped) %>%
  pivot_longer(cols = c(Gender.Male, Gender.Female), names_to = "Gender", values_to = "Present") %>%
  filter(Present > 0, !is.na(Means.of.attack), Means.of.attack != "") %>%
  mutate(Gender = gsub("Gender\\.", "", Gender)) %>%
  mutate(Gender = trimws(tolower(Gender))) %>%
  mutate(
    Gender = case_when(
      Gender == "male" ~ "Male",
      Gender == "female" ~ "Female",
      TRUE ~ Gender
    )
  ) %>%
  pivot_longer(cols = starts_with("Total."), names_to = "Outcome", values_to = "Count") %>%
  mutate(
    Outcome = gsub("Total\\.", "", Outcome),
    Outcome_Label = case_when(
      Outcome == "killed" ~ "Killed",
      Outcome == "wounded" ~ "Injured",
      Outcome == "kidnapped" ~ "Kidnapped",
      TRUE ~ Outcome
    ),
    Attack_Group = case_when(
      Means.of.attack %in% c("Aerial bombardment", "Shelling") ~ "Air/Artillery Attacks",
      Means.of.attack %in% c("Bodily assault", "Rape/sexual assault") ~ "Physical/Sexual Violence",
      Means.of.attack %in% c("Body-borne IED", "Complex attack", "Other Explosives", "Roadside IED", "Vehicle") ~ "Explosives/Complex Attacks",
      Means.of.attack %in% c("Kidnap-killing", "Kidnapping") ~ "Kidnapping Related",
      Means.of.attack %in% c("Landmine") ~ "Landmines",
      Means.of.attack %in% c("Shooting", "Unknown") ~ "Shooting/Unknown",
      TRUE ~ "Other"
    )
  ) %>%
  group_by(Continent, Gender, Attack_Group, Outcome_Label) %>%
  summarise(Count = sum(Count, na.rm = TRUE), .groups = "drop") %>%
  group_by(Continent, Gender) %>%
  mutate(Percent = Count / sum(Count, na.rm = TRUE) * 100) %>%
  ungroup()

# Color mapping
outcome_colors <- c("Killed" = "#c45259", "Injured" = "#f6771d", "Kidnapped" = "#ff878b")

# Create plotly traces
continents <- sort(unique(df_percent$Continent))
traces <- list()
visibility_matrix <- list()
trace_index <- 0

for (i in seq_along(continents)) {
  cont <- continents[i]
  df_sub <- df_percent %>% filter(Continent == cont)
  trace_indices_this_continent <- c()

  for (outcome in unique(df_sub$Outcome_Label)) {
    for (gender in c("Male", "Female")) {
      data_trace <- df_sub %>% filter(Gender == gender, Outcome_Label == outcome)
      if (nrow(data_trace) > 0) {
        # Adjusted Percent
        data_trace$Adjusted_Percent <- ifelse(data_trace$Gender == "Female", -abs(data_trace$Percent), abs(data_trace$Percent))

        trace_index <- trace_index + 1
        show_legend <- (i == 1 && gender == "Male")

        traces[[trace_index]] <- list(
          x = data_trace$Attack_Group,
          y = data_trace$Adjusted_Percent,
          type = "bar",
          name = outcome,
          legendgroup = outcome,
          showlegend = show_legend,
          marker = list(color = outcome_colors[outcome]),
          text = paste0("Attack Type: ", data_trace$Attack_Group,
                        "<br>Gender: ", gender,
                        "<br>Outcome: ", outcome,
                        "<br>Percent: ", round(abs(data_trace$Percent), 1), "%"),
          textposition = "none",
          hoverinfo = "text",
          visible = (i == 1)
        )

        trace_indices_this_continent <- c(trace_indices_this_continent, trace_index)
      }
    }
  }
  visibility_vec <- rep(FALSE, trace_index)
  visibility_vec[trace_indices_this_continent] <- TRUE
  visibility_matrix[[i]] <- visibility_vec
}

# Build the plot
total_plot <- plot_ly()
for (tr in traces) {
  total_plot <- do.call(add_trace, c(list(total_plot), tr))
}

# Dropdown menu
continent_buttons <- lapply(seq_along(continents), function(i) {
  list(
    method = "update",
    args = list(
      list(visible = visibility_matrix[[i]]),
      list(title = paste0("Gender × Attack Type × Outcome (Percentage) - ", continents[i]))
    ),
    label = continents[i]
  )
})

# Layout
final_plot <- layout(total_plot,
  title = paste0("Gender × Attack Type × Outcome (Percentage) - ", continents[1]),
  barmode = "stack",
  xaxis = list(title = "Attack Type"),
  yaxis = list(
    title = "Percentage (%)",
    tickvals = seq(-100, 100, by = 20),
    ticktext = paste0(abs(seq(-100, 100, by = 20)), "%")
  ),
  updatemenus = list(
    list(
      type = "dropdown",
      buttons = continent_buttons,
      x = 0.1,
      y = 1.1,
      showactive = TRUE
    )
  ),
  annotations = list(
    list(
      x = 0.1,
      y = 1.2,
      text = "Select Continent:",
      showarrow = FALSE,
      xref = "paper",
      yref = "paper"
    )
  )
)

final_plot
  • Male aid workers are more frequently affected overall, consistently accounting for the majority of victims across all regions and attack types. They are especially overrepresented in physical assaults, shootings, and explosive incidents.
  • Female workers are disproportionately targeted in kidnapping-related events, particularly in Africa and North America. In some regions, more than one-third of female victims were abducted.
  • Injury is the most common outcome for both genders, but men tend to experience a broader range of attack types, while women are more often affected by specific categories such as sexual violence and “other” undefined attacks.
  • Gendered roles in field operations may contribute to this disparity—male staff are more likely to be in mobile or high-risk positions, while female staff may be more exposed in community-based or less protected environments.

Despite lower overall exposure, female aid workers face more targeted or deliberate forms of violence, including gender-based attacks and assaults tied to their perceived vulnerability.

Final Reflection

Regional Hotspots Persist

  • Countries like Afghanistan, South Sudan, Syria, and Somalia** consistently appear as high-risk zones across all years.
  • Recent spikes in violence—particularly in the Occupied Palestinian Territories (2023)—correlate with major geopolitical escalations.

Organizational Exposure Varies

  • NNGO and INGO bear the highest share of casualties—reflecting their presence in the most exposed environments.
  • UN and ICRC/IFRC staff also face significant risks, though their attack profiles differ by region and mandate.
  • While all organizations are vulnerable, national staff account for the overwhelming majority (80–95%) of victims.

Gender and Risk Are Uneven

  • Male workers are more likely to be killed or injured, especially by gunfire and explosives.
  • Female staff are disproportionately affected by sexual violence and kidnapping, particularly in Africa and Asia.
  • The pattern holds across continents, suggesting a need for more gender-specific protection strategies.

Attacks Are Intentional and Complex

  • Most incidents are not random: they are driven by political motives, armed group targeting, or economic disruptions.
  • Common attack types include shootings, kidnappings, and improvised explosive devices.
  • The rise of complex multi-type attacks also signals evolving tactics from perpetrators.

Summary

  • Humanitarian work is becoming more dangerous, and the risk is not evenly shared.
  • National staff are the backbone of humanitarian delivery, yet they face the greatest threats with the least protection.
  • Risk mitigation strategies must be region-specific, gender-sensitive, and organizationally tailored.
  • Data-driven insights like these can help organizations proactively allocate resources, train staff, and advocate for protection.